package org.example.servicepay.vo;

import lombok.Data;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 发布缴费项目请求参数（学生处使用）
 */
@Data
public class PublishFeeItemRequest {

    /**
     * 缴费项目名称
     */
    @NotBlank(message = "缴费项目名称不能为空")
    @Size(max = 100, message = "缴费项目名称长度不能超过100字符")
    private String feeName;

    /**
     * 缴费金额（元）
     */
    @NotNull(message = "缴费金额不能为空")
    @DecimalMin(value = "0.01", message = "缴费金额不能小于0.01元")
    @DecimalMax(value = "99999.99", message = "缴费金额不能超过99999.99元")
    private BigDecimal feeAmount;

    /**
     * 缴费项目描述
     */
    @Size(max = 500, message = "缴费项目描述长度不能超过500字符")
    private String feeDescription;

    /**
     * 目标专业ID列表
     */
    private List<Long> targetMajors;

    /**
     * 目标学院ID列表
     */
    private List<Long> targetFaculties;

    /**
     * 缴费开始时间
     */
    @NotNull(message = "缴费开始时间不能为空")
    @Future(message = "缴费开始时间必须是未来时间")
    private LocalDateTime startTime;

    /**
     * 缴费截止时间
     */
    @NotNull(message = "缴费截止时间不能为空")
    @Future(message = "缴费截止时间必须是未来时间")
    private LocalDateTime endTime;
}